package com.forest.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * 应用信息.
 *
 * @author Administrator
 */
@Data
@Configuration
@ConfigurationProperties("config.sign")
public class SignatureProperties {

    /** 服务端域名 */
    private String host;

    /** app 配置信息 */
    private List<AppInfo> apps = new ArrayList<AppInfo>();

    @Data
    /**
     * app信息.
     */
    public static class AppInfo {
        /** app id 自定义 */
        private String appId;
        /** app key 应用配置方分配 */
        private String appKey;
        /** app secret 应用配置方分配 */
        private String appSecret;
        /** app iv 应用配置方分配 */
        private String appIv;
        /** app 签名有效时间 秒 默认5分钟 */
        private Long expireSeconds = 300L;
        /** app 签名算法类型 摘要算法：MD2、MD5、SHA-1、SHA-256、SHA-384、SHA-512 默认  SHA-256*/
        private String signatureAlgorithm = "SHA-256";
        /** app 加密算法类型，未配置使用全局配置 */
        private String encryptionAlgorithm;
        /**
         * 是否使用固定向量.
         */
        private Boolean enableFixedIv = false;
    }


    public AppInfo getById(String appId) {
        for (AppInfo appInfo : apps) {
            if (appInfo.getAppId().equals(appId)) {
                return appInfo;
            }
        }
        return null;
    }
}
